package br.org.acessobrasil.portal.action;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import br.org.acessobrasil.facade.FacadeException;
import br.org.acessobrasil.portal.facade.TipoConteudoFacade;
import br.org.acessobrasil.portal.modelo.TipoConteudo;
import br.org.acessobrasil.portal.modelo.Usuario;


public class TipoConteudoAction extends Super {

	private static final long serialVersionUID = 1293801945334863313L;

	private static Logger logger = Logger.getLogger(TipoConteudoAction.class);
	
	private TipoConteudoFacade tipoConteudoFacade;

	
	private List<TipoConteudo> lista = new ArrayList<TipoConteudo>();
	
	private TipoConteudo tipoConteudo;
	
	public TipoConteudoFacade getTipoConteudoFacade() {
		if(tipoConteudoFacade==null) tipoConteudoFacade = (TipoConteudoFacade)getBean("tipoConteudoFacade");
		return tipoConteudoFacade;
	}
	
	public TipoConteudoAction() {
			
	}
	
	/**
	 * Acao do struts
	 * @return SUCCESS vai para lista de itens, INPUT vai para a mesma tela, houve um erro
	 */
	public String criar() {
		Usuario usuario = getUsuarioLogado();
		try{
			if(btnGravar!=null){
				//informa o sitio atual
				tipoConteudo.setSitio(getSitioAtual());
				//salva
				getTipoConteudoFacade().criar(usuario, tipoConteudo);
				//vai para lista de itens
				return SUCCESS;
			}else{
				//criar o dummy
				tipoConteudo = new TipoConteudo();
				tipoConteudo.setNoTipoConteudo(getText("predefinido.nome"));
				tipoConteudo.setDeTipoConteudo(getText("predefinido.descricao"));
			}
		}catch (FacadeException e){
			addActionError("Erro: " + e.getMessage());
		}catch (Exception e) {
			addActionError("Erro: " + e.getMessage());
			logger.error("Erro: " + e.getMessage(), e);
		}
		return INPUT;
	}

	public String listar() {
		lista = getTipoConteudoFacade().buscar(getUsuarioLogado(),getSitioAtual());
		return SUCCESS;
	}

	public String apagar() {
		try{
			Usuario usuario = getUsuarioLogado();
			if(getBtnApagar()!=null){
				getTipoConteudoFacade().excluir(usuario, tipoConteudo);
				return SUCCESS;
			}else if(getBtnCancelar()!=null){
				//cancelou voltar para a lista
				return SUCCESS;
			}else{
				tipoConteudo = getTipoConteudoFacade().buscar(usuario,tipoConteudo.getNuTipoConteudo());
				return INPUT;//input the confirm
			}
		}catch (FacadeException e) {
			addActionError("Erro: "+e.getMessage());
		}catch (Exception e) {
			addActionError("Erro: "+e.getMessage());
			logger.error("Erro inesperado: "+ e.getMessage(),e);
		}
		return INPUT;
	}

	public String editar() {
		Usuario usuario = getUsuarioLogado();
		try{
			if(getBtnGravar()!=null){
				//informa o sitio atual
				tipoConteudo.setSitio(getSitioAtual());
				
				getTipoConteudoFacade().atualizar(usuario,tipoConteudo);
				usuario.addActionMessage(getText("sucesso.atualizado.generic",new String[]{tipoConteudo.getNoTipoConteudo()}));
			}else{
				tipoConteudo = getTipoConteudoFacade().buscar(usuario, tipoConteudo.getNuTipoConteudo());
			}
		}catch (Exception e) {
			usuario.addActionError("Erro: "+e.getMessage());
			logger.error("Erro inesperado: "+ e.getMessage(),e);
		}
		return SUCCESS;
	}

	public List<TipoConteudo> getLista() {
		return lista;
	}
	public void setLista(List<TipoConteudo> lista) {
		this.lista = lista;
	}
	public TipoConteudo getTipoConteudo() {
		return tipoConteudo;
	}
	public void setTipoConteudo(TipoConteudo tipoConteudo) {
		this.tipoConteudo = tipoConteudo;
	}
}
